Circular Redirects হল এমন একটি সমস্যা যেখানে একটি HTTP রিকোয়েস্ট একাধিক রিডাইরেক্ট লুপে আটকে যায়। এটি ঘটে যখন সার্ভার বারবার রিডাইরেক্ট নির্দেশ পাঠায় এবং রিকোয়েস্ট কখনই সম্পন্ন হয় না। এই সমস্যা সাধারণত একাধিক 3xx HTTP স্ট্যাটাস কোড (যেমন 301, 302, 307, 308) দিয়ে ঘটে এবং এটি সার্ভারের রিডাইরেক্ট কনফিগারেশন সম্পর্কিত সমস্যার কারণে হয়।
Apache HTTP Client-এ Circular Redirects সমস্যা সমাধান করার জন্য আপনাকে রিডাইরেক্ট পলিসি কনফিগার করতে হবে এবং কিছু সীমাবদ্ধতা সেট করতে হবে যেন রিডাইরেক্ট লুপে আটকে না যায়।
একটি সাধারণ পরিস্থিতি হল, যদি আপনার অ্যাপ্লিকেশন একটি URL থেকে অন্য একটি URL-এ রিডাইরেক্ট হয়, এবং সেই নতুন URL আবার প্রথম URL-এ রিডাইরেক্ট করে, তাহলে রিডাইরেক্ট লুপ শুরু হয়। এতে HTTP ক্লায়েন্ট কখনও রেসপন্স পায় না, এবং সার্ভারটি অজান্তেই এড়িয়ে চলে।
Apache HTTP Client-এ Circular Redirects সমস্যা সমাধান করার জন্য আপনি রিডাইরেক্ট পলিসি কনফিগার করতে পারেন এবং লুপ রিডাইরেক্ট সীমাবদ্ধ করতে পারেন। এর জন্য, RequestConfig
এর setMaxRedirects
মেথড ব্যবহার করা হয় যা রিডাইরেক্টের সর্বোচ্চ সংখ্যা নির্ধারণ করে। যদি এটি লিমিট পৌঁছে যায়, তখন ক্লায়েন্ট রিডাইরেক্ট বন্ধ করে দেয় এবং একটি TooManyRedirectsException
ত্রুটি দেয়।
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.methods.HttpGet;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.http.impl.client.RequestConfig;
import org.apache.http.impl.client.config.RequestConfig;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
public class HttpClientWithRedirectLimit {
public static void main(String[] args) {
// RequestConfig তৈরি করে রিডাইরেক্ট সীমা নির্ধারণ
RequestConfig requestConfig = RequestConfig.custom()
.setMaxRedirects(5) // রিডাইরেক্টের সর্বোচ্চ সংখ্যা 5 নির্ধারণ করা
.build();
try (CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(requestConfig) // RequestConfig সেট করা
.build()) {
// HTTP GET রিকোয়েস্ট তৈরি
HttpGet request = new HttpGet("https://your-api-endpoint.com");
// রিকোয়েস্ট পাঠানো এবং রেসপন্স প্রাপ্তি
try (CloseableHttpResponse response = httpClient.execute(request)) {
String responseBody = EntityUtils.toString(response.getEntity());
System.out.println("Response: " + responseBody);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
RequestConfig
তৈরি করা হয়েছে এবং তার মধ্যে setMaxRedirects(5)
মেথড ব্যবহার করে রিডাইরেক্টের সর্বোচ্চ সংখ্যা 5 নির্ধারণ করা হয়েছে।HttpClients.custom()
ব্যবহার করে HTTP ক্লায়েন্ট কনফিগার করা হয়েছে যেখানে কাস্টম রিকোয়েস্ট কনফিগারেশন যোগ করা হয়েছে।TooManyRedirectsException
তৈরি করবে এবং রিডাইরেক্ট লুপ থেকে বের হয়ে আসবে।Apache HTTP Client-এর RequestConfig
ব্যবহার করে আপনি নিম্নলিখিত প্যারামিটারগুলো কনফিগার করতে পারেন:
true
থাকে, যা রিডাইরেক্ট লুপের অনুমতি দেয়।RequestConfig requestConfig = RequestConfig.custom()
.setMaxRedirects(5) // রিডাইরেক্টের সর্বোচ্চ সংখ্যা 5 নির্ধারণ করা
.setCircularRedirectsAllowed(false) // রিডাইরেক্ট লুপ বন্ধ করা
.build();
Circular Redirects সমস্যা তখন ঘটে যখন একটি HTTP রিকোয়েস্ট একাধিক বার রিডাইরেক্ট লুপে আটকে যায়। এই সমস্যা সমাধান করতে Apache HTTP Client-এ RequestConfig
ব্যবহার করা হয়, যা রিডাইরেক্টের সর্বোচ্চ সংখ্যা সীমাবদ্ধ করতে সাহায্য করে এবং রিডাইরেক্ট লুপ বন্ধ করতে সক্ষম। setMaxRedirects
মেথড দ্বারা রিডাইরেক্ট সংখ্যা সীমাবদ্ধ করা এবং setCircularRedirectsAllowed(false)
ব্যবহার করে রিডাইরেক্ট লুপ বন্ধ করা যেতে পারে।
common.read_more